home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / cmln0786.arc / TPROLOG2.LTG < prev   
Text File  |  1986-04-26  |  896b  |  44 lines

  1.  
  2.  
  3.                             LISTING 2
  4.                     Database Access Benchmark
  5.  
  6.  
  7.  
  8. /* Test database storage and retrieval by asserting lots of facts and lookingè   them up. */
  9.  
  10.  
  11. DATABASE
  12.  
  13. fact(INTEGER)
  14.  
  15.  
  16. PREDICATES
  17.  
  18. test(INTEGER)
  19. test2(INTEGER, INTEGER)
  20.  
  21.  
  22. CLAUSES
  23.  
  24. /* Tail recursively look up a numbered fact in the database and the assert
  25.    its successor.  First argument is current fact number, second argument
  26.    is limiting fact number to stop at. */
  27.  
  28. test2(X,X).
  29. test2(X,Y) :- fact(X), Z = X + 1, assert(fact(Z)), test2(Z,Y).
  30.  
  31. /* Shorthand predicate to default the test to start with fact(1). */
  32.  
  33. test(Y) :- test2(1,Y).
  34.  
  35. fact(1).                /* Seed the database with the first fact */
  36.  
  37.  
  38. GOAL
  39.  
  40. /* Prompt for the limiting fact number and run the benchmark. */
  41.  
  42. nl, write(ready), nl, readint(X), test(X), write(done), nl.
  43.  
  44.